The present invention relates generally to the field of batch processing and more specifically to bill generation through a batch process. The invention has particular applicability to a billing system for periodically generating bills for cable television subscribers.
Cable television has become immensely popular over the last several decades. Due to the rapid growth and expansion of this industry, many different entities have participated in establishing local cable systems to meet the growing demand. As such, most local cable systems have different requirements, different equipment, different service options and different customer tastes. Almost no two local cable-systems are alike. Because many of the local cable systems are owned by multiple system operators (MSOs), the differences which have resulted from the outgrowth of the cable industry have made centralized control over the operations of the local operators a difficult and burdensome task.
For example, if an MSO owning four local cable systems in four different regions of the country wishes to set pricing information for a particular product, it would have to contact each of the four local cable systems, establish the pricing information, and supervise the local cable systems to ensure that the pricing information for that particular product was properly applied to the customers. Even with these procedures in place, it can be very difficult to maintain consistency in pricing and operations.
Bill production can be an even more daunting task. The reason for this is twofold. First, the sheer volume of data to be processed can be problematic. Secondly, the complexities of the interrelationships between customers, accounts and services can lead to confusion, increased processing time and the potential for errors. With each of the local systems and MSOs establishing individual pricing for products, services, and packages, the process for generating bills for each individual subscriber can become complex, time consuming and error prone. Often, the time required to process a billing cycle can be excessive. This can cause numerous negative effects on the operation of the business including delay in receiving revenue, confused or hostile customers and late bills. Moreover, since many architectures employ the same servers for database requests originating from both OLTP and batch processes, an extended billing batch can have a long term negative impact on system performance from an OLTP standpoint.
Another drawback of currently existing systems with respect to the bills that they generate is the treatment of data in a discrete fashion. For example, account data, service location data and subscriber data are not cohesively related. Various pieces of information, although logically related, are treated as separate abstractions without any relationship between such data represented in the system. Thus, in the case of an individual (e.g. a landlord with multiple rental units) having multiple accounts in different physical locations, multiple billsxe2x80x94one for each rental unitxe2x80x94would generally have to be generated for that single individual. This has obvious drawbacks including increased overall bill processing time, increased postage costs, inconvenience to the subscriber and resource (e.g. paper) waste.
Yet another problem existing in current billing applications relates to error handling. Often, during batch processing of bills, the processing of a particular bill will result in an error. Typically, current systems will respond to this event by discarding the batch, manually processing the bill causing the error or even removing that bill from the batch and then restarting the batch from the beginning. This scenario will often take place even if the batch has been nearly completed at the time that the error occurs. As is apparent to one of skill in the art, such treatment is undesirable in that system resources will be strained to complete the same batch portions multiple times.
Thus a need has arisen for a system which allows for efficient, flexible and accurate bill processing.
It is an object of the present invention to overcome the above and other disadvantages of the present systems.
It is a further object of the present invention to provide a batch processing system having minimal impact on the performance of OLTP transactions.
It is a still further object of the present invention to provide a billing system which allows for centralized control over billing operations.
It is yet another object of the present invention to provide a billing system which logically reflects relationships among the data to be processed.
It is a yet further object of the present invention to provide a system which can effectively and rapidly process large billing batches.
It is a still further object of the present invention to provide a system wherein a batch need not be restarted from the beginning in the event a single batch component fails.
According to one embodiment of the present invention, a method is provided for processing bills for a plurality of customers of a plurality of node systems within a larger system, each customer bill having a particular billing cycle. The method comprises monitoring a current time and date. All customer bill records having a billing cycle begin date and time greater than the current time and date are then gathered together and distributed into node groups based upon the node system associated with the customer. The node groups are then divided into one or more sub-node groups, wherein each customer bill distributed into each sub-node group shares at least one common variable. The sub-node groups are further divided into processing group files, wherein the number of customer bills distributed into each processing group file is predetermined. The processing group files are then processed to generate a bill for each customer bill record in the processing group file.
According to another embodiment of the present invention, a computer system for processing bills for a plurality of customers of a plurality of node systems within a larger system, each customer bill having a particular billing cycle, comprises a processor which contains a component for monitoring the current time and date. The processor also contains a component for generating a file containing customer bill records having a billing cycle begin date and time greater than the current time and date. The processor also contains one or more components for distributing the customer bills records into node groups based upon the node system associated with the customer, for dividing the node groups into one or more sub-node groups, wherein each customer bill distributed into each sub-node group shares at least one common variable, and for dividing the sub-node groups into processing groups, wherein the number of customer bills records distributed into each processing group is predetermined. The processor then processes the customer bill records from at least one of the processing groups. In one embodiment the sub-node groups are determined by a franchise tax area in which a customer is located. The processor may comprise a plurality of processors operating in parallel.
According to yet another embodiment of the present invention, a computer system for processing bills for a plurality of customers of a plurality of node systems within a larger system, each customer bill having a particular billing cycle, comprises a memory for storing a plurality of customer bill records containing raw data to be processed to generate a customer bill. The system also comprises a bill production initiator for waking up periodically and initiating a billing cycle for a plurality of the customer bill records stored in the memory. At least one bill production manager generates a plurality of processing group files containing at least one of the customer bill records stored in the memory such each processing group file has an efficient size and contains customer bill records having at least one common variable. At least one bill production worker processes the customer bill records from at least one of the processing groups. In one embodiment, the bill production initiator comprises components for monitoring a current time and date and for generating a file containing customer bill records having a billing cycle begin date and time greater than the current time and date. Also, the bill production manager may comprise components for distributing the customer bill records into processing group files based upon the node system associated with the customer. The bill production manager may also comprise a component for distributing the customer bill records into processing group files based on a geographical location of the customer, a component for distributing a predetermined number of the customer bill records into each processing group file, and a component for distributing a predetermined number of the customer bill records into each processing group file. The component for distributing the predetermined number of customer bill records may determine the predetermined number by evaluating the number of customer bill records which may be processed in a predetermined amount of time, for example, about one hour. The bill production manager may also comprise a component for distributing the customer bill records into processing group files based on a franchise tax area in which the customer is located.